#ifndef ITERADOR_H_
#define ITERADOR_H_

#include "../componentes/Registro.h"
#include "../Constantes.h"

class EstrategiaAlmacenamiento;

class Iterador {

protected:
	offset offsetActual;

public:

	/*
	 * Pre: -
	 * Pos: Crea una nueva instancia.
	 */
	Iterador();

	/*
	 * Pre: -
	 * Pos: Libera los recursos instanciados.
	 */
	virtual ~Iterador();

	/*
	 * Pre: -
	 * Pos: Devuelve el offset actual.
	 */
	offset getOffset();

	/*
	 * Pre: -
	 * Pos: Devuelve el elemento siguiente y avanza.
	 */
	virtual Bytes getSiguiente() = 0;

	/*
	 * Pre: -
	 * Pos: Devuelve true si tiene siguiente.
	 */
	virtual bool tieneSiguiente() = 0;

	/*
	 * Pre: -
	 * Pos: Reinicia el estado del iterador.
	 */
	virtual void reiniciarIterador() = 0;
};

#endif /* ITERADOR_H_ */
